InputSprocket Extension The main InputSprocket library, all drivers integrated
USB HID Driver This USB driver is required for joystick support on systems
which do not have USB Device Extension 1.3 or later
HID Library This shared library contains the HID parser, required for USB
InputSprocket Debug Extension Debug build of InputSprocketLib, all drivers integrated.
This file should be installed instead of InputSprocket Extension
not in addition to it.
InputSprocket.h Required header for applications.
InputSprocket.r Rez templates for appliciations
InputSprocketLib link library
ISpDeferLib link library, used for InputSprocket drivers
Writing an ISp Driver.pdf Documentation for building an InputSprocket driver
WARNING: don't place both the debugging and non-debugging versions of the
library in the search path or you will not be sure which version you are
using.
Dependencies
------------
InputSprocket requires the latest Universal Headers -- You can find them with the
latest version of your development environment, Apple's WWW and FTP sites or the
developer CD-ROMs.
InputSprocket needs a 640x480 display (or larger) in order for its dialog to
work. If you are asking DrawSprocket for a smaller display size than that you
should switch out before calling InputSprocket.
Compatibility with Previous Releases
------------------------------------
InputSprocket 1.7 should be fully compatible with previous releases of InputSprocket.
Changes from 1.4.1 to 1.7
-------------------------
This version adds a generic USB HID class driver, which replaces all the vendor specific drivers in the previous version. Any USB device which is a true HID device should function, as long as the software determins that it is a gaming device (see list below).
- Game Controls Page (0x05): 3D Game Controller, Pinball Device, Gun Device
Devices with relative value input (ie pointing devices, such as mice), now can have their values 'accelerated' before being passed along to the application need. This is user controlled, in the configure dialog.
All the InputSprocket drivers consolidated into one file. External files are loaded first, so an external file gets the first chance to match to a device.
The field 'reserved1' in the ISpDeviceDefinition structure was renamed permanentIDExtend. This change will not effect any binaries, but source code to some drivers may require an update when using the new InputSprockket.h header file. This field is used to extend the permanentID to 64 bits. If this field is zero, then only 32 bits are significant, as before. If these two fields do not match, but the permanentID fields do match, that will be prefered to a device where the permenantIDs do not match. (If the permanentIDs do not match, then the permanentIDExtend fields will not be compared).
Changes from 1.4 to 1.4.1
-------------------------
- International bug fixes.
- Minor bug fixes.
- Localized for distribution with localized versions of MacOS.
Changes from 1.3 to 1.4
-----------------------
This version adds support for many new USB devices: Saitek Cyborg 3D stick,
KYE/Genius Joystick and Gamepad, Edge/Rockfire Joysticks (2), and gamepads (3).
The need label kISpElementLabel_Btn_PauseResume has been replaced with two
new labels: kISpElementLabel_Btn_Quit and kISpElementLabel_Btn_StartPause.
This is to clarify the purpose and default behavior intended by a need. The
quit need defaults to '<esc>' on the keyboard and can only be changed to
'Cmd Q'. This need quits an active game, or quits the application entirely.
The start/pause need corresponds to the action that a 'start' button on a
gamepad would have, which is often pause. Gamepads and other devices with
a button labeled 'start' should default to the start/pause need. On a keyboard,
the start/pause need can be mapped to any key, unlike the quit need.
There is a hack to allow calibration of USB devices. Essentially, the first
time you configure a device, you should roll the controller to the maximum
extents possible. InputSprocket will memorize the values being returned by
the controller and use these to calibrate it.
Changes from 1.2 to 1.3
-----------------------
A resource definition file "InputSprocket.r" has been added. You can use this
file to create a Rez '.r' file to build the ISp resources into your
application.
One of the templates is for the 'tset' resource created by the ISp keyboard
driver. Note this templete is ONLY valid for a 'tset' generated by the
keyboard. The only way to tell who created the 'tset' is to examine the 'setl'
resource that points to it. The new sample code for DroneZone uses this
template so that the defaults for the keyboard are in a Rez file and are
easily updated when then application's list of needs changes. You still have
recreate the sets for mice and gaming devices when your needs list changes
during development, but not having to re-setup all the keyboard keys every
time should be a big win. (Note: You may have to delete your InputSprocket
Preferences file in order to get the new defaults from the application -- or
change the subCreatorCode passed to ISpInit.)
Special thanks to Jeremy Erwin who is not affiliated with MacALLY, for the
code to support the MacALLY stick.
All mice and keyboard drivers are 'passthru' in the debug versions. This
means that it is VERY important you make sure you also test with the release
versions of the drivers, since some things will work fine with the debug
versions but not with the release drivers. On the other hand, you will never
get stuck in the debugger without being able to type and/or move the cursor.
InputSprocket resets all elements to 'zero' values (symmetric axis are
reset to the center) across suspend/resume. It is the responsibility of
individual ISp drivers to push data to any elements which are non-default
valued when the driver is reactivated.
Many minor bugs have been fixed.
68K support has been added. 68K InputSprocket is only available through
CFM-68K.
Changes from 1.1 to 1.2
-----------------------
This release involves many minor improvements to the InputSprocket drivers,
including an improved user interface (UI) for axis. Some new drivers have
also been added. Several problems and bugs have been addressed.
A new resource has been defined (kISpApplicationResourceType = 'isap') which
all applications which use InputSprocket should put (ID 0) in their resource
fork. They should always set bit 0 (kISpAppResFlag_UsesInputSprocket) and
set bit 1 (kISpAppResFlag_UsesISpInit) if they use the high level API (ie they call
ISpInit, ISpConfig, etc... in other words they have a needs list). The rest of
the bits and reserved fields should be set to 0.
A new ISpElementKind has been added: kISpElementKind_Delta which specifies
a Fixed point number of inches moved. InputSprocket Mouse and
InputSprocket Kensington now register elements of this kind in the low level.
The high level (through ISpConfigure) supports axis as well as delta kinds.
This kind is very useful if you want to control a cursor.
A new definition of ISpNeed can be used by defining USE_OLD_ISPNEED_STRUCT to
0. The first reserved field (a short) was changed to two UInt8s: playerNum and
group. Use playerNum to tell the driver some needs are related to a particular
player (on the same machine). The SprocketInvaders source code will be reved to
use this field. Group is used to group items together, such as a look up, look
down need (assuming you can't use an axis). You should also group items
together that have the same effect, but are 'tuned' button, axis, and delta versions.
The current ISp drivers do not use this hinting, yet. Some new definitions for the
ISpNeedFlagBits have been added. If you use the new definition, make sure you
check your code for cases where you were initializing the struct. You now may
be misaligned, and many compilers will NOT generate a warning.
InputSprocket Mouse supplies pseudo-buttons in the high level for modifier
keys in combination with mouse clicks. You will have at least four buttons
(where some may actually be command/shift/control/option-click on
one-button mice) for any mouse device. This should make it straightforward
to port games which expect a two button mouse: use ISp with delta and
button needs -- and dont worry about what type of device the user has.
InputSprocket Speech added back to distribution (crashing bug fixed)
- InputSprocket Gravis supports Blackhawk and uses new UI (new save set format)
- InputSprocket Thrustmaster uses new UI (new save set format)
- InputSprocket Joy completely revised, renamed InputSprocket CH, now supports
multiple devices seperately and supports up to 8 buttons and 4 hats per device
(new save set format)
- InputSprocket Kensington added, supports kensington devices regardless of their software
- InputSprocket Sidewinder 3D Pro added, supports Microsoft Sidewinder joystick